package com.ruoyi.system.service;

import com.ruoyi.system.domain.db.basic.BasicCompanies;
import com.ruoyi.system.domain.db.basic.BasicVehicles;
import com.ruoyi.system.domain.db.basic.BasicWarehouses;
import com.ruoyi.system.domain.db.transport.TransportTask;
import com.ruoyi.system.domain.dto.TradeCargoOrderDto;
import com.ruoyi.system.domain.request.TradeCargoOrderDeliveryRequest;
import com.ruoyi.system.domain.vo.TransportTaskVo;

import java.util.List;


/**
 * 运输任务Service接口
 * 
 * @author ruoyi
 * @date 2023-08-03
 */
public interface ITransportTaskService 
{
    /**
     * 查询运输任务
     * 
     * @param taskId 运输任务主键
     * @return 运输任务
     */
    public TransportTaskVo selectTransportTaskByTaskId(Long taskId);

    /**
     * 查询运输任务列表
     * 
     * @param transportTask 运输任务
     * @return 运输任务集合
     */
    public List<TransportTaskVo> selectTransportTaskList(TransportTask transportTask);

    /**
     * 新增运输任务
     * 
     * @param transportTask 运输任务
     * @return 结果
     */
    public int insertTransportTask(TransportTask transportTask);

    /**
     * 修改运输任务
     * 
     * @param transportTask 运输任务
     * @return 结果
     */
    public int updateTransportTask(TransportTask transportTask);

    /**
     * 批量删除运输任务
     * 
     * @param taskIds 需要删除的运输任务主键集合
     * @return 结果
     */
    public int deleteTransportTaskByTaskIds(Long[] taskIds);

    /**
     * 删除运输任务信息
     * 
     * @param taskId 运输任务主键
     * @return 结果
     */
    public int deleteTransportTaskByTaskId(Long taskId);

    /**
     * 查询没有被分配的订单
     * @return
     */
    List<TradeCargoOrderDto> selectUndeliveriedOrderList();

    /**
     * 为运输任务分配订单
     * @return
     */
    int assignOrderToTask(TradeCargoOrderDeliveryRequest tradeCargoOrderDeliveryRequest);


    List<BasicWarehouses> getWarehouseList();

    /**
     * 返回可用汽车列表
     */
    List<BasicVehicles> getAvailableCarList();

    /**
     * 返回运输公司列表
     */
    List<BasicCompanies> getTransportCompanyList();


}
